package com.meatball.game.service

import com.meatball.game.data.*
import org.springframework.web.multipart.MultipartFile

/**
 * TODO 游戏基础信息接口层
 *
 * @author 张翔宇
 * @since 2024年3月7日
 */
interface AiGameService {
    /**
     * TODO 生成随机用户
     *
     * @return 用户信息
     */
    fun randomUser() : RandomUser

    /**
     * TODO 开始游戏
     *
     * @return
     */
    fun startGame(data: StartGame) : List<Player>

    /**
     * TODO 聊天
     *
     * @param data 数据
     * @return
     */
    fun chat(data: ChatParams, room: Room)

    /**
     * TODO 投票
     *
     * @param gameId 游戏ID(roomId)
     * @param data 数据
     * @return
     */
    fun castingVote(gameId: String, data: CastingVote) : CastingVoteResult

    /**
     * TODO 获取所以用户
     *
     * @param roomId
     * @return
     */
    fun getUsers(roomId: String) : List<RoomUser>?

    /**
     * TODO 获取投票结果
     *
     * @param roomId
     * @return
     */
    fun getVoteResult(roomId: String) : GetVoteResult

    /**
     * TODO redis key失效触发
     *
     * @param key
     */
    fun expirationKey(key: String)

    fun halfTime(key: String)

    fun testRedis()

    fun handleFileUpload(file: MultipartFile)
}